package review.Day_0402;

/**
 * @author zxc
 * @date 2023/04/02 21:01
 **/
public class Solution05 {
    // 思路 ：使用数组，来模拟支持对于元素进行增量操作的栈;

    int size; // 统计当前栈中元素数量;
    int[] temp; // 模拟 支持对于元素进行增量操作的栈
    public Solution05(int maxSize) {
        this.size = 0;
        // 数组容量，即，所模拟栈的最大容量;
        temp = new int[maxSize];
    }

    public void push(int x) {
        // 所存储的元素数量 < 最大容量
        if(size < temp.length){
            temp[size] = x;
            size++;
        }
    }

    public int pop() {
        // 栈不为空的情况 ：
        if(size > 0){
            size--;
            return temp[size];
        }
        // 栈为空的情况 ：
        return -1;
    }

    public void increment(int k, int val) {
        // 统计所要进行累加操作的次数;
        int move = Math.min(k , size);
        // 遍历temp数组中的前move个元素，同时对于该前move个元素进行累加操作;
        for(int i = 0 ; i < move ; i++){
            temp[i] += val;
        }
    }
}
